package com.catazy.wanandroid.common_base.ext

/**
 * 作者: Tao
 * 日期: 2024/4/10
 * 时间: 11:24
 * 描述: Resource 密封类 加载此数据的数据和状态。
 */
sealed class Resource<T> (
    val data: T? = null, // 数据
    val errorCode: Int? = null, // 错误码
    val errorMsg: String? = null// 错误信息
){
    // 成功
    class Success<T>(data: T) : Resource<T>(data)
    // 加载中
    class Loading<T>(data: T? = null) : Resource<T>(data)
    // 数据错误
    class DataError<T>(errorCode: Int, errorMsg: String? = "") : Resource<T>(null, errorCode, errorMsg)

    override fun toString(): String {
        return when (this) {
            is Success<*> -> "Success[data=$data]"
            is DataError -> "Error[exception=$errorCode $errorMsg]"
            is Loading<T> -> "Loading"
        }
    }
}